import { reactive } from 'vue'
import { defineStore } from './state'

export interface IAppConfig {
  showMark: boolean
  waterMarkText: string
  backgroundColor: string // 页面默认背景色
  pageAnimation: boolean
  wxShare: {
    title: string
    path: string
    imageUrl: string
  }
}

const useAppStore = defineStore(() => {
  const AppConfig = reactive<IAppConfig>({
    showMark: false,
    waterMarkText: '',
    pageAnimation: true,
    backgroundColor: '#f5f5f5',
    wxShare: {
      title: '',
      path: '',
      imageUrl: ''
    }
  })

  return AppConfig
})

export function initAppUpdate(api?: () => Promise<any>) {
  // #ifdef MP
  mpUpdateCheck()
  // #endif
  // #ifdef APP
  if (!api) return
  appUpdateCheck(api)
  // #endif
}

/* app更新初始化 */
function appUpdateCheck(updateImpl: () => Promise<any>) {
  return updateImpl()
}

function mpUpdateCheck() {
  const updateManager = uni.getUpdateManager()
  updateManager.onCheckForUpdate((res) => {
    // 请求完新版本信息的回调
    if (res.hasUpdate) {
      console.log('有新版本了')
    }
  })

  updateManager.onUpdateReady((res) => {
    uni.showModal({
      title: '更新提示',
      content: '新版本已经准备好，是否重启应用？',
      success(res) {
        if (res.confirm) {
          // 新的版本已经下载好，调用 applyUpdate 应用新版本并重启
          updateManager.applyUpdate()
        }
      }
    })
  })

  updateManager.onUpdateFailed((res) => {
    // 新的版本下载失败
    uni.showModal({
      title: '已经有新版本喽~',
      content: '请您删除当前小程序，到微信 “发现-小程序” 页，重新搜索打开哦~',
      success(res) {
        // if (res.confirm) { }
      }
    })
  })
}

export function initAppConfig({ showMark = true, waterMarkText = '这是水印', pageAnimation = true } = {} as IAppConfig) {
  const appStore = useAppStore()
  appStore.showMark = showMark
  appStore.waterMarkText = waterMarkText
  appStore.pageAnimation = pageAnimation
}
export default useAppStore
